package com.cac.demo.dao.msTaskPackage;

import com.cac.demo.entity.msTaskPackage.MsTaskPackageDTO;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Mapper
@Repository
public interface MsTaskPackageDao {

    //预配套数据查询
    public Page<MsTaskPackageDTO> searchMsTaskPackageByPage(@Param("bean") MsTaskPackageDTO msTaskPackageDTO, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
    //分拣预配套工作包AO包查询,分拣未完成
    public Page<MsTaskPackageDTO> searchPackageAoByPage(@Param("bean") MsTaskPackageDTO msTaskPackageDTO);
    //分拣管理页面展示，分拣已完成
    public Page<MsTaskPackageDTO> searchPackageAoByPageCompleted(@Param("bean") MsTaskPackageDTO msTaskPackageDTO);
    //分拣管理页面展示，工艺已更改
    public Page<MsTaskPackageDTO> searchPackageAoByPageChange(@Param("bean") MsTaskPackageDTO msTaskPackageDTO);
    //配套计划数据查询
    public Page<MsTaskPackageDTO> searchMsTaskPackage(@Param("bean") MsTaskPackageDTO msTaskPackageDTO, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
    //分拣操作工作包任务查询
    public Page<MsTaskPackageDTO> searchOperatePage(@Param("bean") MsTaskPackageDTO msTaskPackageDTO, @Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("IP") String IP);
    //工作包出库查询
    public List<HashMap> searchSslShelves(@Param("map") HashMap map);
    //配送工作包出库
    public List<HashMap> taskOutDelivery(@Param("map") HashMap map);
    //工作包物料信息查询
    public Page<HashMap> searchPackageMaterial(@Param("bean")HashMap map, @Param("orderBy") String orderBy, @Param("keyWords")String keyWords);
    //工作包物料信息插入
    public int insertPackageMaterialInfo(@Param("map")HashMap map);
    //工作包物料信息修改
    public int updatePackageMaterial(@Param("map")HashMap map);
    //工作包物料信息删除
    public int deletePackageMaterial(String msPackageMaterialId);
    //工作包物料信息查找id是否存在
    public HashMap searchPackageMaterialId(String msPackageMaterialId);
    //查询配套任务数量
    public HashMap searchTaskCount();
    //查询分拣台任务信息
    public HashMap searchSortTableCount(@Param("map") HashMap map);
    //分拣操作页面查询当前工作包任务
    public List<HashMap> searchCurrentPackage(@Param("IP")String IP);
    //根据ip查询当前分拣台下未分拣的托盘
    public List<HashMap> searchToolCode(@Param("IP")String IP);
    //分拣操作页面查询工作包对应AO
    public List<HashMap> searchCurrentAo(@Param("msTaskPackageId")Object msTaskPackageId);
    //分拣操作页面-查询ao下物料信息
    public Page<HashMap> searchMatchBill(@Param("map")HashMap map);
    //工作包下所有AO 完成时，修改工作包分拣状态
    public int changePackageStatu(@Param("msTaskAoId")String msTaskAoId);
    //部分分拣 增加标识
    public int addSortingRemark(@Param("msTaskAoId")String msTaskAoId);
    //查询工作包下所有AO
    public List<HashMap> searchAllAoByPackage(@Param("map")HashMap map);
    //查询拆包叫的工作包或缓存箱是否存在任务，并且是否在货架上
    int searchExistsTaskAndOnShelves(@Param("palletCode") String palletCode);

    //调用叫箱存储过程
    //调用存储过程
    public HashMap callSortBoxSql(Map map);

    //根据传入工作包主键id，查询AO信息，AO中托盘信息，托盘物料，对应初始缓存箱信息
    public List<HashMap> toolUnpackInfo(@Param("ip") String ip);
}
